package it.magazzinoCofi.controllers;

import it.magazzinoCofi.model.DataUserModel;

import it.magazzinoCofi.view.PView;
import it.magazzinoCofi.view.SchermataPrincipale;
import it.magazzinoCofi.view.UserLoginFrame;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import Data.ErrorType;
import Data.Notify;
import Data.Utente;



public class UserLoginController extends AbstractController{
	


  /**
   * Costruttore
   * @param model
   * @param view
   */

  public UserLoginController(DataUserModel model, UserLoginFrame view) {
	  super(model,view);
	  
	  this.addObserver(PView.getInstance()); //aggiungo l'osservatore
	 
      /**
       * Aggiungo il listener di verifica (definito poco dopo) 
       */
     ((UserLoginFrame)super.getM_view()).addSubmitListener(new SubmitListener());
  }
	
	public void processSubmitAction(){
		
	}
	
	
	
	
	
	class SubmitListener implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent arg0) {
			
			/**
			 * Controllo credenziali e collegamento al MODEL
			 */
			setChanged();
		    //notifyObservers(0);
		    
		    System.out.println("CONTROLLER - Tasto Submit premuto" );
		    
		    //Procedure di verifica utente
			if(((DataUserModel)getM_model()).verifyUser()){
				System.out.println("CONTROLLER - Utente esistente" );
				
				
				setChanged();
			    notifyObservers(new Notify(ErrorType.CHANGE_PAGE, 
			    							Utente.getInstance().getUser(), 
			    							new SchermataPrincipaleController(new DataUserModel(), new SchermataPrincipale(Utente.getInstance().getUser()))));
			}
				
			else
			{
				//aggiungere eccezione
				((UserLoginFrame)getM_view()).displayErrorMessage(ErrorType.USER_NOT_FOUND.toString());
				System.out.println("CONTROLLER - Utente non esistente" );
				setChanged();
			    notifyObservers(new Notify(ErrorType.USER_NOT_FOUND, Utente.getInstance().getUser(),null));
			}
			
			

		    
			
			
		}
		
	}

}
